from django.core.files.storage import Storage
from django.conf import settings
from django.utils import timezone
from fdfs_client.client import Fdfs_client
from rest_framework import serializers
from meiduo_mall.utils.fdfs.custom_upload_handler import custom_upload_by_buffer

# 自定义存储后端
class FdfsStorage(Storage):
    def _open(self, name, mode='rb'):
        """
        打开本地文件
        :param name: 本地文件名称
        :param mode: 打开的模式
        :return: 文件对象
        """
        # return None
        pass


    def _save(self, name, content, max_length=None):
        """
        自定义存储逻辑
        :param name: 存储的文件名称
        :param content: 文件对象
        :param max_length: 最大保存长度
        :return: 返回文件唯一标示
        """
        file_bytes = content.read() # 文件的字节数据
        file_id = custom_upload_by_buffer(file_bytes)
        return file_id


    def url(self, name):
        # 构建完整图片在fdfs的url
        # http://192.168.203.153:8888/group1/M00/00/02/CtM3BVrPB4GAWkTlAAGuN6wB9fU4220429
        return settings.FDFS_URL + name


    def exists(self, name):
        """
        功能：判断文件是否已经上传了
        :param name: 上传的文件名字
        :return: True or False代表 有和没有
        """
        # 告诉django存储后端，无需判断文件是否已经存在，直接调用后续接口实现上传
        return False























